package com.category.douyijia.controller;

import java.util.ArrayList;
import java.util.List;

import com.category.douyijia.model.Area;
import com.category.douyijia.services.AreaService;
import com.jfinal.core.Controller;
import com.jfinal.core.NotAction;
import com.jfinal.core.Path;

/**
 * 创建地区控制器
 * 可以设置所有地区
 * 它可以将那些地区更好的显现出来
 * @author jiangmengyang
 *@version v1.0
 *访问页面路径：douyijia.category.com+/area+"/"+action
 */
@Path("/area")
public class AreaController  extends  Controller{
 /**
  * 创建地区在服务文件中的dao 的工具
  * 这个工具可以利用areaService里面的，
  * 增删改查的功能
  */
	Area area = AreaService.areaDao;
    /**
     * 创建一个非action的方法，
     * 用于查询地区里的信息
     * @return
     * 返回所有地区的信息
     */
@SuppressWarnings({"unchecked","rawtypes"})
@NotAction
    public List<Area> areaAll() {
		return (ArrayList)area.findAll();
    }
 /**
  * 创建一个保存页面模板的方法，
  * 用于保存页面静态模板
  */
    
 @NotAction
 private void keepModel() {
	 /*
	  * 创建一个保存多参数的模板，
	  * 在不指定数据类型文件时，
	  * 默认为string的类型
	  */
	 keepPara("areaName","areaId");
	/*
	 * 创建一个多参数模板，
	 * 指定参数类型为整型
	 */
	 keepPara(Integer.class,"areaPid","areaUpPid");
	 /*
	  * 创建一个多参数模板，
	  * 指定参数类型为字符串
	  */
	 keepPara(String.class,"areaId","areaName") ;
 }
 /**
  * 创建一个注册java的服务页面
  * 使用服务器提供的模板生成页面
  * 主要用于往页面里添加数据
  */
 public void  addtion(){
	 //设置保存数据模板
	 keepModel();
	 //设置网页的模板
	 render("area_addtion.jsp");
 }
 /**
  *创建一个非action得方法
  *查找是私有的，在页面内进行的
  * @param id
  * 通过id查找地区表
  * @return
  * 返回一个地区对象
  */
 	@NotAction
   private Area find_by_id(String id) {
 		/*
 		 * 如果id不为空结果返回一个地区对象，
 		 * 查找地区表里的所有列
 		 * 如果id为空，
 		 * 则返回值为空
 		 */
	   if(id!=null && !(id.equals(""))) {
		   //this.area等于上面建立的实体类的对象
			   return (Area) this.area.find("select area_name,"
			   		+ "area_pid,area_up_id "
			   		+ "from Area "
			   		+ "where area_id = ?",id);
	   }else {
		   return null;
	   }
   }
 	/**
 	 * 如果area不为空则跳转另一个页面
 	 * 如果area为空则返回原来的页面
 	 * 进行页面跳转则用public
 	 * @param area
 	 * 原来的实体类的一个对象
 	 * @param id
 	 * 通过id去查找地区表
 	 * 再进行更改
 	 */
 	public void update_by_id( Area area,  String id){
 		if(area!=null && !(area.equals(""))){
 			/*
 			 * oldArea=this.area=area
 			 * 创建一个原来的地址
 			 */
 			Area oldArea = find_by_id(id);
 			this.area._setAttrs(area).update();
 			render("area_success.jsp");
 		}else {
			render("area_index.jsp");
		}
 	}
 /**
  * 如果地区表里的信息没有错误的话，
  * 开发者科管理员可以访问并修改页面信息
  */
 public void index() {
	 render("area_index.jsp");
 }
    
    
}
